import axios from 'axios'

// 创建axios实例
const api = axios.create({
  baseURL: '/api/v1',
  timeout: 30000,
  headers: {
    'Content-Type': 'application/json'
  }
})

// 请求拦截器
api.interceptors.request.use(
  (config) => {
    // 可以在这里添加token等认证信息
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)

// 响应拦截器
api.interceptors.response.use(
  (response) => {
    return response.data
  },
  (error) => {
    // 处理错误响应
    let errorMessage = '请求失败'
    
    if (error.response) {
      // 服务器返回了错误状态码
      const { status, data } = error.response
      
      switch (status) {
        case 400:
          errorMessage = data.detail || '请求参数错误'
          break
        case 401:
          errorMessage = '未授权访问'
          break
        case 403:
          errorMessage = '禁止访问'
          break
        case 404:
          errorMessage = '请求的资源不存在'
          break
        case 500:
          errorMessage = data.detail || '服务器内部错误'
          break
        default:
          errorMessage = data.detail || `请求失败 (${status})`
      }
    } else if (error.request) {
      // 请求已发出但没有收到响应
      errorMessage = '网络连接错误'
    } else {
      // 其他错误
      errorMessage = error.message || '未知错误'
    }
    
    return Promise.reject(new Error(errorMessage))
  }
)

// Kafka API
export const kafkaAPI = {
  // 测试连接
  testConnection: (config) => {
    return api.post('/kafka/test-connection', config)
  },
  
  // 连接
  connect: (config) => {
    return api.post('/kafka/connect', config)
  },
  
  // 断开连接
  disconnect: () => {
    return api.post('/kafka/disconnect')
  },
  
  // 获取连接状态
  getConnectionStatus: () => {
    return api.get('/kafka/status')
  },
  
  // 获取Topic列表
  getTopics: () => {
    return api.get('/kafka/topics')
  },
  
  // 获取Topic详情
  getTopicInfo: (topicName) => {
    return api.get(`/kafka/topics/${topicName}`)
  },
  
  // 获取Topic分区信息
  getTopicPartitions: (topicName) => {
    return api.get(`/kafka/topics/${topicName}/partitions`)
  },
  
  // 发送消息
  sendMessage: (messageRequest) => {
    return api.post('/kafka/send', messageRequest)
  },
  
  // 批量发送消息
  sendBatchMessages: (batchRequest) => {
    return api.post('/kafka/send/batch', batchRequest)
  }
}

// 日志API
export const logAPI = {
  // 获取日志
  getLogs: (params = {}) => {
    return api.get('/logs', { params })
  },
  
  // 清空日志
  clearLogs: () => {
    return api.delete('/logs')
  },
  
  // 获取操作类型
  getOperationTypes: () => {
    return api.get('/logs/operations')
  }
}

// 默认导出
export default api 